package com.blacktech.dbu.core.dict;

import lombok.Getter;

/**
 * 用户类型枚举
 *
 * @author Yanyunsong
 */
@Getter
public enum UserType {

    /**
     * 超级管理员
     * 所有权限，包括用户管理
     */
    SUPER_ADMIN(Level.SUPER_ADMIN, "超级管理员"),

    /**
     * 管理员
     * 用户管理 + 元数据管理权限
     */
    ADMIN(Level.ADMIN, "管理员"),

    /**
     * 开发者
     * 元数据查看 + DDL导出权限
     */
    DEVELOPER(Level.DEVELOPER, "开发者"),

    /**
     * 查看者
     * 只读权限
     */
    VIEWER(Level.VIEWER, "查看者");

    /**
     * 权限级别
     * <p>
     * 数字越低权限越高
     */
    private final int permissionLevel;
    /**
     * 显示名
     */
    private final String displayName;

    UserType(int permissionLevel, String displayName) {
        this.permissionLevel = permissionLevel;
        this.displayName = displayName;
    }

    public interface Level {
        int SUPER_ADMIN = 1;
        int ADMIN = 2;
        int DEVELOPER = 3;
        int VIEWER = 4;
    }

}